Види і принципи роботи кеш-пам`яті

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Реферат з предмету: Інформатика та Обчислювальна Техніка виконав студент групи 4381С Гаффарова Р.З.

Камський Державний Політехнічний Інститут

Кафедра ЕОУП

м. Набережні Челни

2003

Одним з найважливіших пристроїв комп'ютера є пам'ять, або запам'ятовуючий пристрій (ОЗП). За визначенням, даному в книзі "Інформатика в поняттях і термінах", ОЗУ - "функціональна частина цифрової обчислювальної машини, призначеної для запису, зберігання та видачі інформації, представлених в цифровому вигляді." Однак під це визначення підпадає як власне пам'ять, так і зовнішні запам'ятовуючі пристрої (типу накопичувачів на жорстких і гнучких дисках, магнітної стрічки, CD-ROM), які краще віднести до пристроїв введення / виведення інформації. Таким чином під комп'ютерною пам'яттю в подальшому буде розумітися тільки "внутрішня пам'ять комп'ютера: ОЗУ, ПЗУ, кеш пам'ять і флеш-пам'ять".

Однак ОЗУ працює набагато повільніше процесора. Інша справа - кеш. Дуже швидка і дуже дорога пам'ять. Але саме через дорожнечу в комп'ютерній системі обсяг кеш складає всього 10-15% від обсягу звичайної ОЗУ. А також використовуються спеціальні алгоритми роботи материнської плати і процесора, забезпечують максимальну продуктивність при наявності вбудованої кеш-пам'яті.

1. Загальні поняття про кешуванні і кеш-пам'яті

Існуюча вже більше 100 років архітектура комп'ютера, запропонована ще Фон Нейманом, практично не зазнала змін. Усі також процесор оточує оперативна, постійна і зовнішня пам'ять. І все також оперативна пам'ять, що є однією зі швидкісних елементів пам'яті всередині комп'ютера, не досягає за швидкістю процесор на кілька порядків.

Природно, що такий «гальмо» у вигляді одного з необхідних елементів комп'ютера не влаштовував його творців. Тим більше, що у великих комп'ютерах вже давно існувало поняття кеш-пам'яті (cashe-memory), більш швидкою, ніж ОЗУ, але меншої ємності. Було вирішено перенести її архітектуру з БЕВМ на звичайні персональні комп'ютери.

Принцип роботи кеш-пам'яті полягає в наступному. Процесор рідко використовує весь обсяг ОЗУ практично одночасно. Скакати з одного кута пам'яті в інший, періодично пошвиріваясь по всьому її об'єму - це не найкращий спосіб використання ресурсів комп'ютера. Найчастіше всі звернення процесора до пам'яті зосереджені в невеликій області (як показує статистика - 5-10% від загального обсягу). Якщо дані з цієї області як або апаратно скопіювати в кеш, а потім постійно звіряти кеш і ОЗУ на предмет цілісності даних, то можна забезпечити режим роботи, при якому процесор буде звертатися тільки до кеш-пам'яті, витрачаючи на це значно менше ресурсів і часу, ніж зазвичай.

Природно, що весь обсяг ОЗУ скопіювати в кеш немає можливості - такий об'єм кеш-пам'яті за ціною порівнюється з вартістю комп'ютера, а сенсу зменшувати обсяг ОЗУ теж немає. Було вирішено реалізувати алгоритм роботи процесора, кеш-пам'яті і ОЗУ апаратно, щоб не витрачати ресурси процесора.

Принцип полягає в наступному: коли процесор звертається до певної комірки пам'яті, сегмент пам'яті певного обсягу (цей обсяг називається об'ємом сторінки кеш) копіюється в кеш повністю. Якщо процесор далі не зробить глобальний стрибок на інший, далекий від поточного, адресу пам'яті, то подальша робота процесора буде відбуватися безпосередньо з кеш, минаючи ОЗУ, а контролер кеш-пам'яті в проміжках, коли процесор зайнятий обчисленнями (або паралельно з роботою процесора) буде відновлювати вірні дані в ОЗУ або в кеш (у разі наявності пристроїв, що безпосередньо працюють з пам'яттю). Природно, чим більше буде сторінок і чим більше буде їх обсяг - тим вищою буде швидкість роботи процесора.

Починаючи з 386-х процесорів кеш-пам'ять встановлювалася на більшість материнських плат. Все це дозволяло підвищувати продуктивність систем не в рази, а на порядки. Але з виходом 486 процесора кеш-пам'ять була розділена: з'явився кеш, реалізований безпосередньо на кристалі процесора (у 486DX). Незважаючи на малий його обсяг - 1 Кб - це вже був стрибок у продуктивності і дуже великий: адже кеш, розташований на кристалі процесора працює на частоті процесора, що в кілька разів перевищує швидкість роботи кеш-пам'яті, встановленої на материнській платі.

Починаючи з 486 процесорів кеш-пам'ять відчуває такий поділ на кеш 1-го рівня - встановлений на кристалі (або в одному корпусі) процесора і працює з ним на одній частоті, і кеш 2-го рівня, встановлений на материнській платі, що працює швидше звичайної ОЗУ, але повільніше кеша першого рівня.

Однак цим не обмежується використання кеш-пам'яті. Адже таким чином її можна використовувати там, де існує проблема швидкодії, але є можливість впорядкувати дані. До таких застосувань відносять:

апаратне кешування жорстких дисків (кеш-пам'ять встановлюється безпосередньо на жорсткому диску або на спеціальному контролері);

програмне кешування CD-ROM, а також інших пристроїв зберігання інформації (програмно - за допомогою операційної системи, апаратно - на самому пристрої або на контролері).

І не тільки: сьогодні часто навіть саме простий пристрій має своєю пам'яттю, що працює швидше, ніж сам пристрій. До таких відносять принтери, сканери, модеми і т.д.

Але все-таки найбільш популярною є кеш-пам'ять першого рівня (процесорна) та другого (встановлена ​​на материнській платі).

2. Внутрішній кеш процесора

Внутрішньо кешування звернень до пам'яті застосовується в процесорах, починаючи з 486-го. З кешуванням пов'язані нові функції процесорів, біти регістрів і зовнішні сигнали.

Процесори 486 і Pentium мають внутрішній кеш першого рівня, в Pentium Pro і Pentium II є і вторинний кеш. Процесори можуть мати як єдиний кеш інструкцій і даних, так і загальний. Виділений кеш інструкцій зазвичай використовується тільки для читання. Для внутрішнього кеша зазвичай використовується наборно-асоціативна архітектура.

Рядки в кеш-пам'яті виділяються тільки при читанні, політика запису перших процесорів 486 - тільки Write Through (наскрізний запис) - повністю програмно-прозора. Пізніші модифікації 486-го і всі старші процесори дозволяють перемикатися на політику Write Back (зворотний запис).

Роботу кешу розглянемо на прикладі чотириканального наборно-асоціативного кеша процесора 486. Кеш є несекторірованним - кожен біт достовірності (Valid bit) відноситься до цілої рядку, так що стоку не може бути "частково достовірної".

Роботу внутрішньої кеш-пам'яті характеризують такі процеси: обслуговування запитів процесора на звернення до пам'яті, виділення і заміщення рядків для кешування областей фізичної пам'яті, забезпечення узгодженості даних внутрішнього кеша і оперативної пам'яті, управління кешуванням.

Будь-який внутрішній запит процесора на звернення до пам'яті спрямовується на внутрішній кеш. Теги чотирьох рядків набору, який обслуговує цю адресу, порівнюються зі старшими бітами запитаного фізичної адреси. Якщо адресуемая область представлена ​​в рядку кеш-пам'яті (випадку потрапляння-cache hit), запит на читання обслуговується тільки кеш-пам'яттю, не виходячи на зовнішню шину. Запит на запис модифікує цю рядок, і в залежності від політики запису або відразу виходить на зовнішню шину (при наскрізний запису), або трохи пізніше (при використанні алгоритму зворотного запису).

У разі промаху (Cache Miss) запит на запис іде лише на зовнішню шину, а запит на читання обслуговується складніше. Якщо цей заріс відноситься до Кешована області пам'яті, виконується цикл заповнення цілого рядка кеша - всі 16 байт (32 для Pentium) читаються з оперативної пам'яті і поміщаються в одну з рядків кеша, що обслуговує цю адресу. Якщо витребувані дані не вкладаються в одному рядку, заповнюється і сусідня. Заповнення рядка процесор намагається виконати найшвидшим способом - пакетним циклом з 32-бітними передачами (64-бітними для Pentium і старше).

Внутрішній запит процесора на дані задовольняється відразу, як тільки затребувані дані зчитуються з ОЗУ - заповнення рядка до кінця може відбуватися паралельно з обробкою отриманих даних. Якщо в наборі, який обслуговує цю адресу пам'яті, є вільний рядок (з нульовим бітом достовірності), заповнена буде вона і для неї встановиться біт достовірності. Якщо вільних рядків у наборі немає, буде заміщена рядок, до якої довше всіх не було звернень. Вибір рядка для заміщення виконується на основі аналізу біт LRU (Least Recently Used) за алгоритмом "псевдо-LRU". Ці біти (по три на кожен з наборів) модифікуються при кожному зверненні до рядка даного набору (кеш-попаданні або заміщення).

Таким чином, виділення і заміщення рядків виконаються тільки кеш-промахів читання, при промахи запису заповнення рядків не проводиться. Якщо затребувана область пам'яті присутній у рядку внутрішнього кеша, то він обслужить цей запит. Управляти кешуванням можна тільки на етапі заповнення рядків; крім того, існує можливість їх анулювання - оголошення недостовірними і очищення всієї кеш-пам'яті.

Очищення внутрішньої кеш-пам'яті при наскрізний запису (обнулення біт достовірності всіх рядків) здійснюється зовнішнім сигналом FLUSH # за один такт системної шини (і, звичайно ж, за сигналом RESET). Крім того, є інструкції анулювання INVD і WBINVD. Інструкція INVD анулює рядки внутрішнього кеша без вивантаження модифікованих рядків, тому її необережне використання при включеній політиці зворотного запису може привести до порушення цілісності даних в ієрархічній пам'яті. Інструкція WBINVD попередньо вивантажує модифіковані рядки в основну пам'ять (при наскрізний запису її дію збігається з INVD). За зворотного запису очищення кеша припускає й вивантаження всіх модифікованих рядків в основну пам'ять. Для цього, природно, може знадобитися і значне число тактів системної шини, необхідних для проведення всіх операцій запису.

Анулювання рядків виконується зовнішніми схемами - воно необхідне в системах, у яких в оперативну пам'ять запис може виробляти не тільки один процесор, а й інші контролери шини - процесор або периферійні контролери. У цьому випадку потрібні спеціальні засоби для підтримки узгодженості даних у всіх щаблях пам'яті - в первинної та вторинної кеш-пам'яті і динамічного ОЗУ. Якщо зовнішній (по відношенню до розглянутого процесору) контролер виконує запис у пам'ять, процесору повинен бути поданий сигнал AHOLD. З цього сигналу процесор негайно віддає керування шиною адреси A [31:4], на якій зовнішнім контролером встановлюється адреса пам'яті, супроводжуваний стробом EADS #. Якщо адресована пам'ять присутній у первинному кеші, процесор анулює рядок - скидає біт достовірності цього рядка (вона звільняється). Анулювання рядка процесор виконує в будь-якому стані.

Управління заповненням кешу можливо і на апаратній і на програмному рівнях. Процесор дозволяє кешувати будь-яку область фізичної пам'яті, але зовнішні схеми можуть забороняти процесору кешувати певні області пам'яті. Це робиться з різних причин, найчастіше пов'язаний із певними умовами створення комп'ютерної системи.

3. Зовнішній кеш процесора

На відміну від внутрішньої кеш-пам'яті, зовнішня більше нагадує звичайну пам'ять. Однак алгоритм роботи з нею практично такою ж.

Зовнішня кеш-пам'ять складається з пам'яті даних, побудована на мікросхемах SRAM, і контролера кеша. У кеш-пам'яті зберігається інформація, що копіюються з основної оперативної пам'яті. Кожного разу при зверненні мікропроцесора до пам'яті контролер кеш-пам'яті перевіряє наявність даних у кеші. Якщо ці дані в кеші є ("попадання"), то мікропроцесор отримує дані з кеша. Якщо цих даних немає ("промах"), виконується звичайний цикл звернення до оперативної пам'яті DRAM.

Основним чинником, що визначає ймовірність попадання, є ємність кеш-пам'яті. Як правило, при обсязі кеша в 2 Кбайта ймовірність попадання складає від 50 до 60%. Оскільки розмір кеш-пам'яті на сучасних комп'ютерах перевищує 256 Кбайт, то ймовірність потрапляння буде вище 90% (для комп'ютерів із обсягом пам'яті ~ 256 Мбайт.)

Для реалізації кеш-пам'яті в даний час розроблені ефективні однокристальні контролери. Найбільш широке поширення одержали контролери i82385 фірми Intel і A38152 фірми Asustec Microsystems.

Контролер i82385 підтримує 32 Кбайта кеш-пам'яті, і може працювати в двох конфігураціях:

кеш-пам'ять з прямим відображенням;

двоканальна модульно-асоціативна кеш-пам'ять.

Перша конфігурація характеризується простотою реалізації, проте вона виявляється неефективною при роботі в мультизадачних системах. У двоканальної реалізації кеш-пам'ять розбиває всі 4 Гбайтного адресний простір на 262144 сторінки по 16 Кбайт. 32-х розрядний фізичну адресу складається з четирнадцатіразрядного адреси, що визначає інформацію в кеш-пам'яті, і восемнадцатіразрядного тега, що визначає номер сторінки. Кожен адреса оперативної пам'яті може бути відображений в одну з двох осередків кеш-пам'яті.

Особливість контролера кеш-пам'яті - забезпечення можливості паралельної роботи мікропроцесора з кеш-пам'яттю і периферійних пристроїв з оперативною пам'яттю в режимі прямого доступу. При запису даних за адресами, які містяться в кеші, контролер ліквідує копії цих блоків у кеші. Всю роботу по синхронізації даних у DRAM і кеші бере на себе цей контролер.

Одним з популярних контролерів кеш-пам'яті є однокристальний контролер кеш-пам'яті фірми ASUSTEC, спільно з пам'яттю даних 32 Кбайта забезпечує вірогідність попадання більше 95%. Це досягається завдяки використанню чотириканального модульно-асоціативного звернення, який відображає адресу оперативної пам'яті в одну з чотирьох клітинок кеш-пам'яті. При цьому, внаслідок організації послідовного звернення до пам'яті даних, потрібне підключення лише одного банку пам'яті даних.

Контролер A38152 фірми Asustec має апаратні і програмні засоби, що забезпечують зв'язаність інформації: логіка стеження за шиною, яка забезпечує ліквідацію копій блоків в кеш-пам'яті, завдання області адрес, не відображається в кеш-пам'ять.

На багатьох материнських платах можна вибирати між однорівневою або багаторівневої системами організації пам'яті. За замовчуванням встановлюється ражим багаторівневої пам'яті. Якщо Ви встановите режим однорівневої пам'яті, то кеш-пам'ять SRAM просто додається до адресного простору основної оперативної пам'яті. Однорівневу пам'ять краще використовувати, коли внутрішній кеш процесора за об'ємом перевершує ємкість кеш-пам'яті на материнській платі.

4. Додаткова кеш-пам'ять і програмне кешування

4.1. Кешування дисків

Проте кеш-пам'ять процесора і оперативної пам'яті - це не єдиний варіант її використання. Фактично кешування як процес збільшення швидкості за рахунок підміни пристрою більш швидким, використовується вже давно. Причому не апаратно, а програмно (апаратно теж, але це залишається за високим парканом закритих технологій виробників жорстких дисків та інших пристроїв).

Операційна система MS-DOS з 4 версії має у своєму складі програму smartdrive, що дозволяє найбільш використовувані дані з жорсткого диска (або дисків) перенести в пам'ять комп'ютера. При цьому ОС, звертаючись до диску, буде фактично звертатися до пам'яті, за рахунок чого збільшиться швидкодію. Пізніше, при найменшій завантаженні дані з пам'яті будуть скинуті на диск.

Природно, тому що ідеалу не існує, то і в даній моделі доводиться чимось жертвувати. Такий жертвою є вільна пам'ять. Проте якщо на перших комп'ютерах з обсягом пам'яті 1-16 Мб це було істотно, то сьогодні, коли обсяг пам'яті нерідко всього лише в кілька разів менше обсягу диска, виділити під кеш 4-16 Мб не так вже й страшно.

Але сьогодні думати про це користувачеві немає необхідності. Сучасні операційні системи Windows 95/98/Me/2000/XP організують кеш для жорсткого диска (і взагалі для всіх пристроїв зберігання інформації) в пам'яті самостійно, автоматично виділяючи під будь-який пристрій необхідний обсяг і роблячи це абсолютно непомітно для користувача.

Єдиним недоліком такої організації залишається те, що в разі зникнення живлення (і не дуже хорошому блоці живлення) дані з пам'яті на диск ОС скинути не встигне, і їх буде втрачено.

Варто додати, що сьогодні практично всі жорсткі диски мають вбудований кеш для збільшення роботи. Причому йому не властивий недолік, описаний нами вище. Сучасні технології дозволяють жорсткого диска навіть після зникнення живлення нормально очищати кеш і завершувати роботу.

4.2. Файл підкачки як кеш

Проте, говорячи про кеш, не можна не згадати про таку його своєрідною реалізації, як файл підкачки в Windows. Здавалося б: якщо комп'ютер і так гальмує через роботу з ОЗУ, то навіщо створювати зайві проблеми й скидати якісь дані з ОЗУ на диск - адже це ще сильніше зменшить швидкість роботи системи. Однак цілі тут зовсім інші.

Основне призначення файлу підкачки полягає в тому, щоб дозволити активній програмі скористатися практично всім об'ємом пам'яті, встановленим на комп'ютері. Природно, що якщо ви працюєте в word і друкуєте (вже дві години) три сторінки якогось тексту, то всі 512 Мб ОЗУ вам не потрібні. Але якщо сфера вашої діяльності - відео, звуки або робота в інтернеті (особливо в ролі web-майстра), то це вже є істотним плюсом ОС. Ви можете запустити всі потрібні вам програми, а потім не тільки користуватися практично 100% обсягу ОЗУ, встановленого на комп'ютері, але і використовувати його в якості такого собі величезного буфера обміну.

Крім того, дана організація дозволяє виконати ще одну функцію: періодичну оптимізацію даних, що містяться в ОЗУ з метою більш раціонального його використання. Видалення даних, вже не використовуються, а також збереження даних, рідко використовуваних, на диску, дозволяє вивільнити додатковий обсяг простору.

Висновок

Кеш-пам'ять, що з'явилася в кінці 80-х, була доступна небагатьом і найчастіше їй пророкували коротке майбутнє: ціни на неї були астрономічні, а реальної надбавки швидкодії було недостатньо. Однак бум високих технологій у 90-х змінив ставлення користувачів і фахівців до подібного явища: зараз кеш люблять і зменшують найчастіше у випадку знову ж дорожнечі зі сльозами.

Випустивши 486 процесор, фірма Intel зробила справжню революцію. Тут не тільки наявність вбудованого математичного співпроцесора і множення частоти, але ще і наявність вбудованого кеш. Сумно визнати, але з цього моменту подібних революцій Intel вже не виробляла.

Після цього був Pentium Pro, що несе на собі вже два рівні кеш-пам'яті, а потім і Pentium II, аналогічний попередньому, але більш швидкий та більш дешевий.

Потім намітилося розділення: вбудований кеш другого рівня забезпечував серйозний підйом продуктивності, але коштував дорого. Тому в дешевих моделях процесорів (Celeron Covington - 266-300 МГц) його встановлювати не поспішали (знову ж таки є думка, що кеш-то там є, просто його робота заборонена).

Однак у наступній моделі Celeron - Mednocino (300-433 МГц) кеш другого пам'яті вже був. І на сьогоднішній день, принаймні Intel, більше не заявляє про те, що збирається позбавляти якийсь свій майбутній процесор цього корисного додачу.

Список літератури

Гук. М. Процесори intel від 8086 до Pentium 4. З-Пітербург - "Пітер Паблішинг" - 2002.

В.Е. Фігурне IBM PC для користувача; 8 видання. Москва - «Фінанси», 2001.

Огляд процесорів і шин ПВМ. Москва - 2001.

Косячков Р. Дід мороз - червоний ніс. Компьютерра-Спецвипуск, Зима 2002, Зимові подарунки. С. 8-13.

Радовський М. Шляхи апгрейда. Компьютерра-Спецвипуск, Зима 2002, Зимові подарунки. С. 14-21.


Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Реферат
40кб. | скачати


Схожі роботи:
Види пам`яті витісняють статичну пам`ять
Організація пам`яті СП Доступ до пам`яті Блоки пам`яті
Характеристики процесора та внутрішньої пам`яті комп`ютера швидкодію розрядність обсяг пам`яті
Види пам яті
Види пам`яті їх психологічна характеристика
Види і особливості порушення пам`яті у людини
Види пам`яті Виховання особистим прикладом
Кеш-пам`ять
Кеш пам`ять
© Усі права захищені
написати до нас